package com.ponhu.ea2.goodsCenter.provider.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ponhu.ea2.dto.CloudTradeGoodsCheckDto;
import com.ponhu.ea2.dto.PhInventoryForCloudTradeDto;
import com.ponhu.ea2.entity.CloudTradeGoods;
import com.ponhu.ea2.query.CloudTradeGoodsQuery;
import com.ponhu.ea2.vo.CloudTradeGoodsDetailV2VO;
import com.ponhu.ea2.vo.CloudTradeGoodsDetailVO;

/**
 *
 */
public interface CloudTradeGoodsService extends IService<CloudTradeGoods> {

    /**
     * 根据云商商品ID查询商品详细信息
     *
     * @param cloudTradeGoodsId
     * @return
     */
    @Deprecated
    public CloudTradeGoodsDetailVO getCloudTradeGoodsDetailById(Long cloudTradeGoodsId);

    /**
     * 根据云商商品ID查询商品详细信息
     *
     * @param cloudTradeGoodsId
     * @return
     */
    public CloudTradeGoodsDetailV2VO getCloudTradeGoodsDetailByIdV2(Long cloudTradeGoodsId);

    /**
     * 根据云商渠道商品编码查询商品详细信息
     *
     * @param channelGoodsCode
     * @return
     */
    public CloudTradeGoodsDetailVO getCloudTradeGoodsDetailByChannelGoodsCode(String channelGoodsCode);

    /**
     * 分页查询云商商品列表
     *
     * @param cloudTradeGoodsQuery
     * @return
     */
    public IPage<CloudTradeGoods> getCloudTradeGoodsList(CloudTradeGoodsQuery cloudTradeGoodsQuery);


    /**
     * 更新云商商品表状态
     *
     * @param id
     * @param checkStatus
     */
    boolean changeCloudTradeGoodsStatus(Long id, Integer checkStatus);

    /**
     * 添加云商商品
     *
     * @param cloudTradeGoods
     * @return
     */
    boolean addCloudTradeGoods(CloudTradeGoods cloudTradeGoods);

    /**
     * 更新云商商品
     *
     * @param cloudTradeGoods
     * @return
     */
    boolean updateCloudTradeGoods(CloudTradeGoods cloudTradeGoods);

    /**
     * 根据云商渠道商品编码更新云商物料编码
     *
     * @param channelGoodsCode
     * @return
     */
    boolean updateCloudTradeGoodsMaterialCode(String channelGoodsCode, String materialCode);

    /**
     * 根据渠道商品编码查询云商商品
     *
     * @param channelGoodsCode
     * @return
     */
    CloudTradeGoods getCloudTradeGoodsByChannelGoodsCode(String channelGoodsCode);

    /**
     * 下架商品
     *
     * @param channelGoodsCode
     * @return
     */
    boolean downShelf(String channelGoodsCode);

    /**
     * 上架商品
     *
     * @param channelGoodsCode
     * @return
     */
    boolean upShelf(String channelGoodsCode);

    /**
     * 审核云商商品并分发数据至商品中心
     * @param checkDto
     * @return
     */
    public PhInventoryForCloudTradeDto checkCloudTradeGoodsAndDispatchDataToGoodsCenter(CloudTradeGoodsCheckDto checkDto);

    CloudTradeGoodsDetailV2VO getCloudTradeGoodsDetailByChannelGoodsCodeV2(String channelGoodsCode);
}
